package com.dhcc.sds.standard.service;

import java.util.List;
import java.util.Map;

import cn.hutool.core.lang.tree.Tree;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.plugins.Page;
import com.dhcc.core.framework.base.service.IBaseService;
import com.dhcc.core.framework.result.node.ZTreeNode;
import com.dhcc.sds.standard.dto.TreeNode;
import com.dhcc.sds.standard.entity.SdsStandDicEntity;
import com.dhcc.sds.standard.entity.SdsStandSourceEntity;

/**
 * 项目标准化字典表数据服务层接口
 * 
 * @ClassName: ISdsStandDicService
 * @Description: TODO
 * @author sunyingjie
 * @date 2021-03-22 10:09:57
 */
public interface ISdsStandDicService  extends IBaseService<SdsStandDicEntity> {
	
    List<SdsStandDicEntity> page(Page<SdsStandDicEntity> page,Map<String, Object> map);
    List<SdsStandDicEntity> list(Map<String, Object> map);

    /**
     * 查询标化字典（Array）
     */
    JSONArray getDicDescMap();
    /**
     * 查询标准化字典
     * @return
     */
    JSONObject getDicMap();

    /**
     * 查询标准药品分类
     * @return
     */
    List<ZTreeNode> getCategoryTree();

    /**
     * 根据数据源查询分类
     * @param source
     * @return
     */
    List<SdsStandDicEntity> listBySource(String source);

    /**
     * 根据数据源查询标准化字典
     * @param source
     * @return
     */
    JSONObject getDicMapBySource(String source);

    SdsStandDicEntity getBySourceAndDicDesc(String sourceDesc, String dicDesc);

    List<ZTreeNode> tree();

    List<TreeNode> getDicTree(Long parentId, Long dataSourceId);

    List<Tree<Long>> getDicTree2(Long dataSourceId);

    /**
     *  查询标化字典根类型
     */
    JSONArray getDicRoot();

    boolean isHaveChildren(Long sdsStandDicId);

    void deleteAllById(Long sdsStandDicId);
    /**
     *  根据节点获取该节点所有根节点
     */
    List<Long> getRootChildren(Long parentId);
}
